package cn.hicard.risk.service.bd;

import java.util.List;

import cn.hicard.core.Page;
import cn.hicard.core.PageResult;
import cn.hicard.core.Where;
import cn.hicard.risk.entity.BdTradefileinfo;
import cn.hicard.risk.vo.PoscreditratioVo;
import cn.hicard.risk.vo.Postradedeviant;

/**
 * 传统POS商户的交易数据业务接口
 * @author zhangy
 *
 */
public interface TradefileinfoService {
	
	
	/**
	 * 将传统POS商户的交易数据集合保存到数据库
	 * 如果原本已经存在相同交易参考号的数据，则不保存
	 * @param list
	 * @return 已经存在的交易参考号
	 * @throws Exception
	 */
	public String saveList(List<BdTradefileinfo> list) throws Exception;
	
	/**
	 * 从传统POS交易数据中筛选需要紧急调单的数据
	 * @param date
	 * @return
	 * @throws Exception
	 */
	public List<BdTradefileinfo> findCallorder(String date)throws Exception;

	/**
	 * 分页查询导入的交易数据
	 * @param trade条件
	 * @param page分页
	 * @return
	 * @throws Exception
	 */
	public PageResult<BdTradefileinfo> search(Where where, Page page)throws Exception;
	
	/**
	 * 根据where据表述的条件查询实体集合，HQL与SQL同时支持，当心where中写错字段
	 * @param where
	 * @return
	 * @throws Exception
	 */
	public List<BdTradefileinfo> findByWhere(Where where)throws Exception;
		
	/** 查询: 2.2.传统pos商户信用卡比例报表 */
	public PoscreditratioVo findPoscreditratio(Where where) throws Exception;

	/** 查询: 2.4.传统pos商户大额交易报表 */
	public List<BdTradefileinfo> findPosriskctrl(Where where)throws Exception;

	/** 查询: 2.5.传统pos商户信用卡频繁交易报表 */
	public List<BdTradefileinfo> findPoscreditoftentime(Where where, double money, int count)throws Exception;

	/** 查询: 2.7.传统pos商户交易偏离值报表 */
	public List<Postradedeviant> findPostradedeviant(Where where1, Where where2, double change)throws Exception;
	
	public List<String> findLastDate() throws Exception;

}
